#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/epoll.h>

/*TODO como incluyo un .h de otro projecto. ya lo referencie
#include "Commons.h" */
#include "./includes/Conexiones.h"
#include "./includes/Estructuras.h"


/* realizarHandShake()
 * - envia un mensaje identificatorio al destinatario
 * - se queda esperando el mensaje de respuesta
 * - retorna la respuesta
 * */
int realizarHandShake(int iSocket)
{
	/* armar mensaje nipc*/

	/* enviar mensaje*/

	/* en recv bloqueante para recibir mensaje */

	/* analizar respuesta y devolver ok o error segun corresponda */

	return HANDSHAKE_OK;
}

int conectarseAlServer()
{
	char *IPServidor;
	int PuertoServidor;

	/*
	struct sockaddr_in Servidor;
	int Socket=socket(AF_INET, SOCK_STREAM, 0);

	if (Socket == -1)
	{
		return -1;
	};

	Servidor.sin_family = AF_INET;
	Servidor.sin_addr.s_addr= inet_addr((char*)IPServidor);
	Servidor.sin_port = htons(PuertoServidor);
	memset(Servidor.sin_zero,'\0',sizeof (Servidor.sin_zero));

	if (connect(Socket, (struct sockaddr *)&Servidor, sizeof(struct sockaddr)) == -1)
    		return -1;

	return Socket;
	* */

	return EXIT_SUCCESS;
}

int realizarConexionCliente()
{
	int iSocket;
	extern struct stConexion *ptrConexiones;
	struct stConexion *ptrAux;

	printf("**** 2. Conectandose al Server **** \n");

	/* Conectarse al RAID o al PPD */
	iSocket = conectarseAlServer();

	if(iSocket == CONNEXION_REFUSED) return EXIT_FAILURE;

	/* Realizar HandShake */
	if(realizarHandShake(iSocket) == HANDSHAKE_ERROR) return HANDSHAKE_ERROR;

	/* Inicializo la lista de conexiones * /
	LIST_INIT(ptrConexiones);

	ptrAux = malloc(sizeof(struct Conexion));
	/* Guardo el socket de comunicacion con el PPD o RAID * /
	ptrAux->lh_first->socket = iSocket;

	/* TODO no se como hacer q no me de error esta linea
	 * LIST_INSERT_HEAD(ptrConexiones, ptrAux, conex);
	 */

	return iSocket;
}





